/*
 * Copyright (c) 2025 Industrial Software Feature Database
 */
package com.comac.ins.isfd.domain.bo;

import java.util.Date;
import java.util.List;

import com.comac.ins.common.core.validate.AddGroup;
import com.comac.ins.common.core.validate.EditGroup;
import com.comac.ins.common.core.validate.QueryGroup;
import com.comac.ins.common.mybatis.core.page.PageQuery;
import com.comac.ins.isfd.domain.IsfdDatabaseModelingTemplate;
import com.comac.ins.isfd.domain.vo.IsfdDatabaseModelingTemplateConfigVo;
import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 数据库建模模版对象
 *
 * @author wujialin
 * @date 2024-12-05
 */
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = IsfdDatabaseModelingTemplate.class, reverseConvertGenerate = false)
public class IsfdDatabaseModelingTemplateBo extends PageQuery {

    /**
     * ID
     */
    @NotBlank(message = "ID不能为空", groups = {EditGroup.class})
    private Long id;

    /**
     * config ID
     */
    @NotBlank(message = "config ID不能为空", groups = {EditGroup.class})
    private Long configId;

    /**
     * 模型名称
     */
    @NotBlank(message = "模板名称不能为空", groups = {AddGroup.class, EditGroup.class})
    private String templateName;

    /**
     * 模板描述
     */
    @NotEmpty(message = "模板描述不能为空", groups = {AddGroup.class, EditGroup.class, QueryGroup.class})
    private String templateDescription;

    /**
     * 删除标志;0：存在；1：删除
     */
    @NotNull(message = "删除标志;0：存在；1：删除不能为空", groups = {AddGroup.class, EditGroup.class})
    private Integer isDelete;

    /**
     * 创建时间
     */
    private Date createTime;

    /**
     * 创建人
     */
    private Long createBy;

    /**
     * 更新时间
     */
    private Date updateTime;

    /**
     * 更新人
     */
    private Long updateBy;

    /**
     * 租户编号
     */
    private String tenantId;

    /**
     * 创建部门
     */
    private Long createDept;

    /**
     * 要素库类型
     */
    private String databaseType;

    /**
     * 业务场景定义id
     */
    private Long businessId;

    /**
     * 业务场景
     */
    private String businessSceneName;

    /**
     * 业务系统定义id
     */
    private Long businessSystemId;

    /**
     * 业务系统名称
     */
    private String businessSystemName;

    /**
     * 描述
     */
    private String description;

    /**
     * 版本
     */
    private String versionNumber;
}
